<?php
require_once 'PB.php';
	class OsebaModel extends PB{
		
		public function getOsebaById($id) {
			$this->conn();
			$oseba = $this->read('oseba','*',array("idoseba" => $id),null,false);
			
			//echo "SEM V modelu, oseba: <br>";
			//print_r($oseba);
			
			$znanja = $this->read('znanja','*',array("oseba_idoseba" => $oseba->getIdoseba()),null,true);
			//echo "SEM V modelu, iscem znanja za osebo: <br>";
			//print_r($znanja);
						
			$prijavniPod = $this->read('prijavnipodatki','*', array("idprijavniPodatki" => $oseba->getPrijavniPodatki_idprijavnipodatki()),null,false);
			//echo "SEM v modelu, iscem prijavne podatke za osebo: <br>";
			//print_r($prijavniPod);
			
			$jeziki = $this->read('jeziki','*',array('oseba_idoseba'=>$oseba->getIdoseba()),null,true);
            
            $aktivnosti = $this->read('aktivnosti','*',array('oseba_idoseba'=>$oseba->getIdoseba()),null,true);
            
            $izobrazba = $this->read('izobrazba','*',array('oseba_idoseba'=>$oseba->getIdoseba()),null,true);
            
            $delovne = $this->read('delovneizkusnje','*',array('oseba_idoseba'=>$oseba->getIdoseba()),null,true);
            
            //$vmesna = $this->read('oseba_profesor','*',array('oseba_idoseba'=>$oseba->getIdoseba()),null,true);
			
			
			//$profesor = $this->read('profesor','*',array("idprofesor" => $id),null,false);
			
			//echo "SEM V modelu, oseba: <br>";
			//print_r($oseba);
			
			//$uci = $this->read('oseba_profesor','oseba_idoseba',array("profesor_idprofesor" => $profesor->getIdprofesor()),null,true);
			//echo "SEM V modelu, iscem ucence za prof: <br>";
			//print_r($uci);
			
			
			$sql = "SELECT * FROM oseba_profesor WHERE oseba_idoseba = :idoseba";
			$pb = $this->getConnection();
			$stmt = $pb->prepare($sql);
			$stmt->bindValue(":idoseba", $oseba->getIdoseba());
			$stmt->execute();
			
			$profesorji = array();
			$i = 0;
			
			while($profesor = $stmt->fetch()){
				//echo "sem v WHILE loop... $i ... oseba:<br>";
				//print_r($ucenec);
				$profesorji[$i] = $this->read('profesor','*',array("idprofesor" => $profesor["profesor_idprofesor"]));
				$i++;
			}
            
            
            
            $oseba->setZnanja($znanja);
			$oseba->setPrijavniPodatki_idprijavnipodatki($prijavniPod);	
			$oseba->setJeziki($jeziki);
            $oseba->setAktivnosti($aktivnosti);
            $oseba->setIzobrazba($izobrazba);
            $oseba->setDelovneIzkusnje($delovne);
            $oseba->setProfesorji($profesorji);

			$this->disconnect();
			return $oseba;
		}
		
		public function getOsebaByName($name){
			$this->conn();
			$name = mysql_escape_string($name);
			//echo "ime po formatiranju: ". $name . "<br>";
			$fname = strtolower($name);
			//echo "ime po formatiranju: ". $fname . "<br>";
			
			$oseba = $this->read('oseba','*',array("ime" => $fname));
			//print_r($oseba);
			$this->disconnect();
			return $oseba;
		}
		
		
		public function editOseba($id,$data){
			$this->conn();
			$affected = $this->update('oseba', $data, array('idoseba' => $id));
			$this->disconnect();
			return $affected;
		}
		
		public function getAllOsebe() {
			$this->conn();
			$osebe = $this->read('oseba','*',null,null,true);
			return $osebe;
		}
		
		
		public function registerOseba($data) {
			
			//TODO: preveri pravilnost izpolnjevanja
			//echo " DATA ARRAY: <br>";
			//print_r($data);
			
			
			$upIme = $data["upIme"];
			$data["geslo"] = md5($data["geslo"]);
			//$tip = $data["tip"];
			
			//TODO: precisti podatke
			$credentials = $this->array_slice_assoc($data, 'upIme', 2,true);
			//echo "<br> osebni podatki: <br>";
			//print_r($credentials);
			$this->conn();
			$id = $this->write('prijavnipodatki', $credentials);
			//echo "<br>sem v register metodi: ".$id." <br> preostali ARRAY: ";
			
			$data = $this->array_slice_assoc($data, 'ime', 7);
			$data["prijavniPodatki_idprijavniPodatki"] = $id;
			//print_r($data);
			//$oseba = new Oseba();
			//$oseba->setIme($data["ime"]);
			$this->write('oseba',$data);
			
			return $data;
		}
		
		
		public function getPredmeti($osebaId) {
			$this->conn();
						
			$oseba = $this->read('oseba','*',array('idoseba'=>$osebaId),null,false);
			
			$sql = "SELECT * FROM oseba_profesor WHERE oseba_idoseba = :idoseba";
			$pb = $this->getConnection();
			$stmt = $pb->prepare($sql);
			$stmt->bindValue(":idoseba", $oseba->getIdoseba());
			$stmt->execute();
			
			$profesorPredmet = array();
			//$i = 0;
			
			
			$predmeti = $stmt->fetchAll(PDO::FETCH_ASSOC);
			$profesorPredmet = $predmeti;
			
			
			for($i=0;$i<count($predmeti);$i++){
				$profesor = $this->read('profesor','*',array("idprofesor"=>$predmeti[$i]["profesor_idprofesor"]));
				$profesorPredmet[$i]["profesor"] = $profesor->getIme();
			}
			//$this->read('profesor','*',array("idprofesor" => $profesor["profesor_idprofesor"]));
			
			/*
			while($profesor = $stmt->fetch(PDO::FETCH_ASSOC)){
				//echo "sem v WHILE loop... $i ... profesor:<br>";
				//print_r($profesor);
				$profesorji[$i] = $this->read('profesor','*',array("idprofesor" => $profesor["profesor_idprofesor"]));
				//$profesorji[$i]["predmet"] = $profesor["predmet"];
				//$profesorji[$i]["ocena"] = $profesor["ocena"];
				$profesorji[$i]->setUci($profesor);
				$i++;
			}*/
			//echo "sem v getProfesorji modelu: <br>";
			//print_r($profesorji);
			return $profesorPredmet;
		}
		
		public function getAktivnosti($osebaId) {
			$this->conn();
			$aktivnosti = $this->read('aktivnosti','*',array('oseba_idoseba'=>$osebaId),null,true);
			$this->disconnect();
			return $aktivnosti;
		}
		
		public function saveAktivnost($aktivnost) {
			$this->conn();
			
			if(is_object($aktivnost)){
				echo "v object veji....";	
				return $this->write('aktivnosti',null,$aktivnost);
			}else{
				return $this->write('aktivnosti',$aktivnost);
			}
		}
		
		
		public function getIzobrazbe($osebaId) {
			$this->conn();
			$izobrazbe = $this->read('izobrazba','*',array('oseba_idoseba'=>$osebaId),null,true);
			$this->disconnect();
			return $izobrazbe;
		}
		
		public function saveIzobrazba($izobrazba) {
			$this->conn();
			if(is_object($izobrazba)){
					
				return $this->write('izobrazba',null,$izobrazba);
			}else{
				return $this->write('izobrazba',$izobrazba);
			}
			
		}
		
		
		public function getPovezave($osebaId) {
			$this->conn();
			//$id = mysql_real_escape_string($osebaId);
			$povezave = $this->read('povezave','*',array('oseba_idoseba'=>$osebaId),null,true);
			$this->disconnect();
			return $povezave;
		}
		
		public function savePovezava($povezave) {
			$this->conn();
			if(is_object($povezave)){
						
				return $this->write('povezave',null,$povezave);
				
			}else if(is_array($povezave)){
				echo "v array veji....";			
				return $this->write('povezave',$povezave);
			}	
			
		}
		
		public function getZnanja($osebaId) {
			$this->conn();
			$znanja = $this->read('znanja','*',array("oseba_idoseba"=>$osebaId),null,true);
			return $znanja;
		}
		
		public function saveZnanje($znanje) {
			$this->conn();
			if(is_object($znanje)){						
				return $this->write('znanja',null,$znanje);				
			}else{			
				return $this->write('znanja',$znanje);
			}	
		}
        
        public function getDelovneIzkusnje($osebaId) {
			$this->conn();
			$delovne = $this->read('delovneizkusnje','*',array("oseba_idoseba"=>$osebaId),null,true);
			return $delovne;
		}
		
		public function saveDelovneIzkusnje($delovneIzkusnje) {
			$this->conn();
			if(is_object($delovneIzkusnje)){						
				return $this->write('delovneizkusnje',null,$delovneIzkusnje);				
			}else{			
				return $this->write('delovneizkusnje',$delovneIzkusnje);
			}	
		}
        
        public function getJeziki($osebaId) {
			$this->conn();
			$jeziki = $this->read('jeziki','*',array("oseba_idoseba"=>$osebaId),null,true);
			return $jeziki;
		}
		
		public function saveJeziki($jeziki) {
			$this->conn();
			if(is_object($jeziki)){						
				return $this->write('jeziki',null,$jeziki);				
			}else{			
				return $this->write('jeziki',$jeziki);
			}	
		}
		
		
		public function findOsebaBySearch($searchString){
			$this->conn();
			return $this->search('oseba', $searchString);
		}
        
        public function getAllPovezave() {
			$this->conn();
			//$id = mysql_real_escape_string($osebaId);
			$povezave = $this->read('povezave','*',null,null,true);
			$this->disconnect();
			return $povezave;
		}
        
        public function removePovezave($id) {
			$this->conn();
			
			
			$profesor = $this->delete('povezave',$id);
			
			$this->disconnect();
			return $profesor;
		}
		
		public function updatePovezava($id,$data){
			$this->conn();
			$affected = $this->update('povezave', $data, array('idpovezave' => $id));
			$this->disconnect();
			return $affected;
		}
        
        public function saveMapa($data) {
			$this->conn();
			if(is_object($data)){						
				return $this->write('mapa',null,$data);				
			}else{			
				return $this->write('mapa',$data);
			}	
		}
        
        public function getAllMape($id) {
			$this->conn();
			//$id = mysql_real_escape_string($osebaId);
			$mape = $this->read('mapa','*',array('oseba_idoseba'=>$id),null,true);
			$this->disconnect();
			return $mape;
		}
        
        public function getAllDatoteke($id) {
			$this->conn();
			//$id = mysql_real_escape_string($osebaId);
			$datoteke = $this->read('datoteke','*',array('mapa_idmapa'=>$id),null,true);
			$this->disconnect();
			return $datoteke;
		}
        
        public function saveDatoteka($datoteka) {
			$this->conn();
			if(is_object($datoteka)){						
				return $this->write('datoteke',null,$datoteka);				
			}else{			
				return $this->write('datoteke',$datoteka);
			}	
		}
        
        public function getMapa($id) {
			$this->conn();
			//$id = mysql_real_escape_string($osebaId);
			$mape = $this->read('mapa','*',array('idmapa'=>$id),null,true);
			$this->disconnect();
			return $mape;
		}
        
        
	}
?>